home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload Trio 2 / Shareware Overload Trio Volume 2 (Chestnut CD-ROM).ISO / dir38 / vga_doc2.zip / VGABIOS.TXT < prev    next >
Text File  |  1993-01-22  |  29KB  |  708 lines

  1. ----------1000-------------------------------
  2. INT 10 - VIDEO - SET VIDEO MODE
  3.     AH = 00h
  4.     AL = mode (see below)
  5. Return: AL = video mode flag (Phoenix BIOS)
  6.          20h mode > 7
  7.          30h modes <= 7 except mode 6
  8.          3Fh mode 6
  9.     AL = CRT controller mode byte (Phoenix 386 BIOS v1.10)
  10. Notes:       IBM standard modes do not clear the screen if the high bit of AL is set
  11.       (EGA or higher only)
  12. SeeAlso: AX=0070h,AX=007Eh,AX=10F0h,AX=6F05h,AH=FFh"GO32",INT 5F/AH=00h
  13.  
  14. Values for video mode:
  15.      text/ text   pixel pixel    colors  display  scrn system
  16.      grph  resol  box   resoltn          pages   addr
  17.  00h = T   40x25  8x14           16gray     8    B800 EGA
  18.      = T   40x25  8x16             16       8    B800 MCGA
  19.      = T   40x25  9x16             16       8    B800 VGA
  20.  01h = T   40x25  8x14             16       8    B800 EGA
  21.      = T   40x25  8x16             16       8    B800 MCGA
  22.      = T   40x25  9x16             16       8    B800 VGA
  23.  02h = T   80x25  8x14           16gray     4    B800 EGA
  24.      = T   80x25  8x16             16       4    B800 MCGA
  25.      = T   80x25  9x16             16       4    B800 VGA
  26.  03h = T   80x25  8x14             16       4    B800 EGA
  27.      = T   80x25  8x16             16       4    B800 MCGA
  28.      = T   80x25  9x16             16       4    B800 VGA
  29.  04h = G   40x25  8x8     320x200           4    B800 CGA,PCjr,EGA,MCGA,VGA
  30.  05h = G   40x25  8x8     320x200 4gray          B800 CGA,PCjr,EGA
  31.      = G   40x25  8x8     320x200   4            B800 MCGA,VGA
  32.  06h = G   80x25  8x8     640x200   2            B800 CGA,PCjr,EGA,MCGA,VGA
  33.  07h = T   80x25  9x14            mono     var   B000 MDA,Hercules,EGA
  34.      = T   80x25  9x16            mono           B000 VGA
  35.  0Bh =                 reserved (used internally by EGA BIOS)
  36.  0Ch =                 reserved (used internally by EGA BIOS)
  37.  0Dh = G   40x25  8x8     320x200  16       8    A000 EGA,VGA
  38.  0Eh = G   80x25  8x8     640x200  16       4    A000 EGA,VGA
  39.  0Fh = G   80x25  8x14    640x350 mono      2    A000 EGA,VGA
  40.  10h = G   80x25  8x14    640x350   4       2    A000 64k EGA
  41.      = G                  640x350  16            A000 256k EGA,VGA
  42.  11h = G   80x30  8x16    640x480 mono           A000 VGA,MCGA,ATI EGA,ATI VIP
  43.  12h = G   80x30  8x16    640x480 16/256k        A000 VGA,ATI VIP
  44.      = G   80x30  8x16    640x480 16/64          A000 ATI EGA Wonder
  45.  13h = G   40x25  8x8     320x200 256/256k       A000 VGA,MCGA,ATI VIP
  46. ----------1001-------------------------------
  47. INT 10 - VIDEO - SET TEXT-MODE CURSOR SHAPE
  48.     AH = 01h
  49.     CH = bit 7    should be zero
  50.          bits 6,5 cursor blink
  51.         (00=normal, 01=invisible, 10=erratic, 11=slow)
  52.         (00=normal, other=invisible on EGA/VGA)
  53.          bits 4-0 top scan line containing cursor
  54.     CL = bottom scan line containing cursor (bits 0-4)
  55. Notes: buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, but
  56.        returns unmapped cursor shape
  57.        applications which wish to change the cursor by programming the
  58.        hardware directly on EGA or above should call INT 10/AX=1130h or
  59.        read 0040h:0085h first to determine the current font height
  60. BUG:   AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL
  61.        is not equal to the current video mode
  62. SeeAlso: AH=03h,AX=CD05h
  63. ----------1002-------------------------------
  64. INT 10 - VIDEO - SET CURSOR POSITION
  65.     AH = 02h
  66.     BH = page number
  67.           0-3 in modes 2&3
  68.           0-7 in modes 0&1
  69.         0 in graphics modes
  70.     DH = row (00h is top)
  71.     DL = column (00h is left)
  72. SeeAlso: AH=03h,AH=05h
  73. ----------1003-------------------------------
  74. INT 10 - VIDEO - GET CURSOR POSITION AND SIZE
  75.     AH = 03h
  76.     BH = page number
  77.           0-3 in modes 2&3
  78.           0-7 in modes 0&1
  79.         0 in graphics modes
  80. Return: AX = 0000h (Phoenix BIOS)
  81.     CH = start scan line
  82.     CL = end scan line
  83.     DH = row (00h is top)
  84.     DL = column (00h is left)
  85. Notes: a separate cursor is maintained for each of up to 8 display pages
  86.        many ROM BIOSes incorrectly return the default size for a color display
  87.        (start 06h, end 07h) when a monochrome display is attached
  88. SeeAlso: AH=01h,AH=02h
  89. ----------1004-------------------------------
  90. INT 10 - VIDEO - READ LIGHT PEN POSITION (EGA Only)
  91.     AH = 04h
  92. Return: AH = light pen trigger flag
  93.          00h not down/triggered
  94.          01h down/triggered 
  95.     DH,DL = row,column of character light pen is on 
  96.     CH = pixel row (graphics modes 04h-06h)
  97.     CX = pixel row (graphics modes with >200 rows)
  98.     BX = pixel column
  99. Notes: on a CGA, returned column numbers are always multiples of 2 (320-
  100.        column modes) or 4 (640-column modes)
  101.        returned row numbers are only accurate to two lines
  102. ----------1005-------------------------------
  103. INT 10 - VIDEO -  SELECT ACTIVE DISPLAY PAGE
  104.     AH = 05h
  105.     AL = new page number (00h to number of pages - 1) (see AH=00h)
  106. SeeAlso: AH=0Fh
  107. ----------1006-------------------------------
  108. INT 10 - VIDEO - SCROLL UP WINDOW
  109.     AH = 06h
  110.     AL = number of lines by which to scroll up (00h = clear entire window)
  111.     BH = attribute used to write blank lines at bottom of window
  112.      CH,CL = row,column of window's upper left corner
  113.      DH,DL = row,column of window's lower right corner
  114. Note:  affects only the currently active page (see AH=05h)
  115. Warning: some implementations have a bug which destroys BP
  116. SeeAlso: AH=07h,AH=72h,AH=73h
  117. ----------1007-------------------------------
  118. INT 10 - VIDEO - SCROLL DOWN WINDOW
  119.     AH = 07h
  120.     AL = number of lines by which to scroll down (00h=clear entire window)
  121.     BH = attribute used to write blank lines at top of window
  122.      CH,CL = row,column of window's upper left corner
  123.      DH,DL = row,column of window's lower right corner
  124. Note:  affects only the currently active page (see AH=05h)
  125. Warning: some implementations have a bug which destroys BP
  126. SeeAlso: AH=06h,AH=72h,AH=73h
  127. ----------1008-------------------------------
  128. INT 10 - VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  129.     AH = 08h
  130.     BH = page number (00h to number of pages - 1) (see AH=00h)
  131. Return: AH = attribute
  132.          bit    7: blink
  133.          bits 6-4: background color
  134.                000 black
  135.                001 blue
  136.                010 green
  137.                011 cyan
  138.                100 red
  139.                101 magenta
  140.                110 brown
  141.                111 white
  142.          bits 3-0: foreground color
  143.                0000 black       1000 dark gray
  144.                0001 blue        1001 light blue
  145.                0010 green       1010 light green
  146.                0011 cyan        1011 light cyan
  147.                0100 red         1100 light red
  148.                0101 magenta     1101 light magenta
  149.                0110 brown       1110 yellow
  150.                0111 light gray  1111 white
  151.     AL = character
  152. Notes: for monochrome displays, a foreground of 1 with background 0 is underlined
  153.        the blink bit may be reprogrammed to enable intense background colors
  154.        using AX=1003h or by programming the CRT controller
  155. SeeAlso: AH=09h,AX=1003h
  156. ----------1009-------------------------------
  157. INT 10 - VIDEO - WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  158.     AH = 09h
  159.     AL = character to display
  160.     BH = page number (00h to number of pages - 1) (see AH=00h)
  161.     BL = attribute (text mode) or color (graphics mode)
  162.          if bit 7 set in graphics mode, character is xor'ed onto screen
  163.     CX = number of times to write character
  164. Notes: all characters are displayed, including CR, LF, and BS
  165.        replication count in CX may produce an unpredictable result in graphics
  166.        modes if it is greater than the number of positions remaining in the
  167.        current row
  168. SeeAlso: AH=08h,AH=0Ah,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
  169. ----------100A-------------------------------
  170. INT 10 - VIDEO - WRITE CHARACTER ONLY AT CURSOR POSITION
  171.     AH = 0Ah
  172.     AL = character to display
  173.     BH = page number (00h to number of pages - 1) (see AH=00h)
  174.     BL = attribute (PCjr only) or color (graphics mode)
  175.          if bit 7 set in graphics mode, character is xor'ed onto screen
  176.     CX = number of times to write character
  177. Notes: all characters are displayed, including CR, LF, and BS
  178.        replication count in CX may produce an unpredictable result in graphics
  179.        modes if it is greater than the number of positions remaining in the
  180.        current row
  181. SeeAlso: AH=08h,AH=09h,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
  182. ----------100B--BH00-------------------------
  183. INT 10 - VIDEO - SET BACKGROUND/BORDER COLOR
  184.     AH = 0Bh
  185.     BH = 00h
  186.     BL = background/border color (border only in text modes)
  187. SeeAlso: AH=0Bh/BH=01h
  188. ----------100B--BH01-------------------------
  189. INT 10 - VIDEO - SET PALETTE
  190.     AH = 0BH
  191.     BH = 01h
  192.     BL = palette ID
  193.          00h background, green, red, and brown/yellow
  194.          01h background, cyan, magenta, and white
  195. SeeAlso: AH=0Bh/BH=00h
  196. ----------100C-------------------------------
  197. INT 10 - VIDEO - WRITE GRAPHICS PIXEL
  198.     AH = 0Ch
  199.     BH = page number
  200.     AL = pixel color (if bit 7 set, value is xor'ed onto screen)
  201.     CX = column
  202.     DX = row
  203. Notes: valid only in graphics modes
  204.        BH is ignored if the current video mode supports only one page
  205. SeeAlso: AH=0Dh,AH=46h
  206. ----------100D-------------------------------
  207. INT 10 - VIDEO - READ GRAPHICS PIXEL
  208.     AH = 0Dh
  209.     BH = page number
  210.     CX = column
  211.     DX = row
  212. Return: AL = pixel color
  213. Notes: valid only in graphics modes
  214.        BH is ignored if the current video mode supports only one page
  215. SeeAlso: AH=0Ch,AH=47h
  216. ----------100E-------------------------------
  217. INT 10 - VIDEO - TELETYPE OUTPUT
  218.     AH = 0Eh
  219.     AL = character to write
  220.     BH = page number
  221.     BL = foreground color (graphics modes only)
  222. Notes: characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
  223.        and do the expected things
  224.        IBM PC ROMs dated 4/24/81 and 10/19/81 require that BH be the same as
  225.        the current active page
  226. SeeAlso: AH=02h,AH=0Ah
  227. ----------100F-------------------------------
  228. INT 10 - VIDEO - GET CURRENT VIDEO MODE
  229.     AH = 0Fh
  230. Return: AH = number of character columns
  231.     AL = display mode (see AH=00h)
  232.     BH = active page (see AH=05h)
  233. Notes: if mode was set with bit 7 set ("no blanking"), the returned mode will
  234.        also have bit 7 set
  235.        EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
  236.        (monochrome) in all extended-row text modes
  237. SeeAlso: AH=00h,AH=05h,AX=1130h,AX=CD04h
  238. ----------101000----------------------------
  239. INT 10 - VIDEO - SET SINGLE PALETTE REGISTER (PCjr,EGA,MCGA,VGA)
  240.     AX = 1000h
  241.     BL = palette register number (00h-0Fh)
  242.        = attribute register number (undocumented)
  243.          10h attribute mode control register (should let BIOS control this)
  244.          11h overscan color register (see also AX=1001h)
  245.          12h color plane enable register (bits 3-0 enable corresponding
  246.          text attribute bit)
  247.          13h horizontal PEL panning register
  248.          14h color select register
  249.     BH = color or attribute register value
  250. Notes: on MCGA, only BX = 0712h is supported
  251.        under UltraVision, the palette locking status (see AX=CD01h)
  252.        determines the outcome
  253. SeeAlso: AX=1002h,AX=1007h,AX=CD01h
  254. ----------101001-----------------------------
  255. INT 10 - VIDEO - SET BORDER (OVERSCAN) COLOR (PCjr,EGA,VGA)
  256.     AX = 1001h
  257.     BH = border color (00h-3Fh)
  258. BUG: the original IBM VGA BIOS incorrectly updates the parameter save area
  259.      and places the border color at offset 11h of the palette table
  260.      rather than offset 10h
  261. Note: under UltraVision, the palette locking status (see AX=CD01h)
  262.       determines the outcome
  263. SeeAlso: AX=1002h,AX=1008h,AX=CD01h
  264. ----------101002-----------------------------
  265. INT 10 - VIDEO - SET ALL PALETTE REGISTERS (PCjr,EGA,VGA)
  266.     AX = 1002h
  267.     ES:DX -> palette register list
  268. Note: under UltraVision, the palette locking status (see AX=CD01h)
  269.       determines the outcome
  270. SeeAlso: AX=1000h,AX=1001h,AX=1009h,AX=CD01h
  271.  
  272. Format of palette register list:
  273. Offset  Size     Description
  274.  00h   16 BYTEs  colors for palette registers 00h through 0Fh
  275.  10h      BYTE   border color
  276. ----------101003-----------------------------
  277. INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, VGA)
  278.     AX = 1003h
  279.     BL = new state
  280.          00h background intensity enabled
  281.          01h blink enabled
  282. Note: although there is no function to get the current status, bit 5 of
  283.       0040h:0065h indicates the state
  284. SeeAlso: AH=08h
  285. ----------101007-----------------------------
  286. INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+)
  287.     AX = 1007h
  288.     BL = palette or attribute (undoc) register number (see AX=1000h)
  289. Return: BH = palette or attribute register value
  290. Notes: UltraVision v2+ supports this function even on color EGA systems in
  291.        video modes 00h-03h, 10h, and 12h; direct programming of the palette
  292.        registers will cause incorrect results because the EGA registers are
  293.        write-only.  To guard against older versions or unsupported video
  294.        modes, programs which expect to use this function on EGA systems
  295.        should set BH to FFh on entry.
  296. SeeAlso: AX=1000h,AX=1009h
  297. ----------101008-----------------------------
  298. INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA,UltraVision v2+)
  299.     AX = 1008h
  300. Return: BH = border color (00h-3Fh)
  301. Notes: UltraVision v2+ supports this function even on color EGA systems in
  302.        video modes 00h-03h, 10h, and 12h; direct programming of the palette
  303.        registers will cause incorrect results because the EGA registers are
  304.        write-only.  To guard against older versions or unsupported video
  305.        modes, programs which expect to use this function on EGA systems
  306.        should set BH to FFh on entry.
  307. SeeAlso: AX=1001h
  308. ----------101009-----------------------------
  309. INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
  310.     AX = 1009h
  311.     ES:DX -> 17-byte buffer (see AX=1002h)
  312. Notes: UltraVision v2+ supports this function even on color EGA systems in
  313.        video modes 00h-03h, 10h, and 12h; direct programming of the palette
  314.        registers will cause incorrect results because the EGA registers are
  315.        write-only.  To guard against older versions or unsupported video
  316.        modes, programs which expect to use this function on EGA systems
  317.        should set the ES:DX buffer to FFh before calling.
  318. SeeAlso: AX=1002h,AX=1007h,AX=CD02h
  319. ----------101010-----------------------------
  320. INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (VGA/MCGA)
  321.     AX = 1010h
  322.     BX = register number
  323.     CH = new value for green (0-63)
  324.     CL = new value for blue (0-63)
  325.     DH = new value for red (0-63)
  326. SeeAlso: AX=1012h,AX=1015h
  327. ----------101012-----------------------------
  328. INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (VGA/MCGA)
  329.     AX = 1012h
  330.     BX = starting color register
  331.     CX = number of registers to set
  332.     ES:DX -> table of 3*CX bytes where each 3 byte group represents one
  333.          byte each of red, green and blue (0-63)
  334. SeeAlso: AX=1010h,AX=1017h
  335. ----------101013-----------------------------
  336. INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)
  337.     AX = 1013h
  338.     BL = subfunction
  339.          00h select paging mode
  340.          BH = 00h select 4 blocks of 64
  341.          BH = 01h select 16 blocks of 16
  342.          01h select page
  343.          BH = page number (00h to 03h) or (00h to 0Fh)
  344. Note: not valid in mode 13h
  345. SeeAlso: AX=101Ah
  346. ----------101015-----------------------------
  347. INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA)
  348.     AX = 1015h
  349.     BL = palette register number
  350. Return: DH = red value
  351.     CH = green value
  352.     CL = blue value
  353. SeeAlso: AX=1010h,AX=1017h
  354. ----------101017-----------------------------
  355. INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA)
  356.     AX = 1017h
  357.     BX = starting palette register
  358.     CX = number of palette registers to read
  359.     ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)
  360. Return: buffer filled with CX red, green and blue triples
  361. SeeAlso: AX=1012h,AX=1015h
  362. ----------101018-----------------------------
  363. INT 10 - VIDEO - undocumented - SET PEL MASK (VGA/MCGA)
  364.     AX = 1018h
  365.     BL = new PEL value
  366. SeeAlso: AX=1019h
  367. ----------101019-----------------------------
  368. INT 10 - VIDEO - undocumented - READ PEL MASK (VGA/MCGA)
  369.     AX = 1019h
  370. Return: BL = value read
  371. SeeAlso: AX=1018h
  372. ----------10101A-----------------------------
  373. INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
  374.     AX = 101Ah
  375. Return: BL = paging mode
  376.          00h four pages of 64
  377.          01h sixteen pages of 16
  378.     BH = current page
  379. SeeAlso: AX=1013h
  380. ----------10101B-----------------------------
  381. INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA)
  382.     AX = 101Bh
  383.     BX = starting palette register
  384.     CX = number of registers to convert
  385. SeeAlso: AH=12h/BL=33h
  386. ----------1011-------------------------------
  387. INT 10 - VIDEO - TEXT-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
  388.     AH = 11h
  389. The following functions will cause a mode set, completely resetting
  390. the video environment, but without clearing the video buffer
  391.     AL = 00h, 10h: load user-specified patterns
  392.          ES:BP -> user table
  393.          CX  = count of patterns to store
  394.          DX  = character offset into map 2 block
  395.          BL  = block to load in map 2
  396.          BH  = number of bytes per character pattern
  397.     AL = 01h, 11h: load ROM monochrome patterns (8 by 14)
  398.          BL  = block to load
  399.     AL = 02h, 12h: load ROM 8 by 8 double-dot patterns
  400.          BL  = block to load
  401.     AL = 03h: set block specifier
  402.          BL  = block specifier
  403.            (EGA/MCGA) bits 0,1 = block selected by chars with attribute bit 3=0
  404.               bits 2,3 = block selected by chars with attribute bit 3=1
  405.             (VGA) bits 0,1,4 = block selected by attribute bit 3 = 0
  406.               bits 2,3,5 = block selected by attribute bit 3 = 1
  407.     AL = 04h, 14h: load ROM 8x16 character set (VGA)
  408.          BL  = block to load
  409. The routines called with AL=1xh are designed to be called only
  410. immediately after a mode set and are similar to the routines called
  411. with AL=0xh, except that:
  412.       Page 0 must be active.
  413.       Bytes/character is recalculated.
  414.       Max character rows is recalculated.
  415.       CRT buffer length is recalculated.
  416.       CRTC registers are reprogrammed as follows:
  417.        R09 = bytes/char-1 ; max scan line (mode 7 only)
  418.        R0A = bytes/char-2 ; cursor start
  419.        R0B = 0            ; cursor end
  420.        R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
  421.        R14 = bytes/char     ; underline loc
  422.           (*** BUG: should be 1 less ***)
  423. SeeAlso: AX=CD10h
  424. ----------1011-------------------------------
  425. INT 10 - VIDEO - GRAPHICS-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
  426.     AH = 11h
  427.     AL = 20h: set user 8 by 8 graphics characters (INT 1F)
  428.           ES:BP -> user table
  429.     AL = 21h: set user graphics characters
  430.           ES:BP -> user table
  431.           CX      = bytes per character
  432.           BL      = row specifier
  433.             00h user set
  434.                 DL = number of rows
  435.             01h 14 rows
  436.             02h 25 rows
  437.             03h 43 rows
  438.     AL = 22h: ROM 8 by 14 set
  439.           BL = row specifier (see above)
  440.     AL = 23h: ROM 8 by 8 double dot
  441.           BL = row specifier (see above)
  442.     AL = 24h: load 8x16 graphics characters (VGA/MCGA)
  443.           BL = row specifier (see above)
  444.     AL = 29h: load 8x16 graphics characters (Compaq Systempro)
  445.           BL = row specifier (see above)
  446. Notes: these functions are meant to be called only after a mode set
  447.        UltraVision v2+ sets INT 43 to the appropriate font for AL=22h,23h,24h,
  448.        and 29h
  449. SeeAlso: INT 1F, INT 43
  450. ----------101130-----------------------------
  451. INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
  452.     AX = 1130h
  453.     BH = pointer specifier
  454.          00h INT 1Fh pointer
  455.          01h INT 43h pointer
  456.          02h ROM 8x14 character font pointer
  457.          03h ROM 8x8 double dot font pointer
  458.          04h ROM 8x8 double dot font (high 128 characters)
  459.          05h ROM alpha alternate (9 by 14) pointer (EGA,VGA)
  460.          06h ROM 8x16 font (MCGA, VGA)
  461.          07h ROM alternate 9x16 font (VGA only)
  462.          11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync EGA)
  463.          12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync EGA)
  464. Return: ES:BP = specified pointer
  465.     CX    = bytes/character
  466.     DL    = character rows on screen - 1
  467. Note: for UltraVision v2+, the 9xN alternate fonts follow the corresponding
  468.       8xN font at ES:BP+256N
  469. SeeAlso: AX=1100h,AX=1120h,INT 1F,INT 43
  470. ----------1012--BL10-------------------------
  471. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA INFO
  472.     AH = 12h
  473.     BL = 10h
  474. Return: BH = 00h color mode in effect (I/O port 3Dxh)
  475.          01h mono mode in effect (I/O port 3Bxh)
  476.     BL = 00h  64k bytes memory installed
  477.          01h 128k bytes memory installed
  478.          02h 192k bytes memory installed
  479.          03h 256k bytes memory installed
  480.     CH = feature bits
  481.     CL = switch settings
  482. ----------1012--BL20-------------------------
  483. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE PRTSC
  484.     AH = 12h
  485.     BL = 20h  select alternate print screen routine
  486. Notes: installs a PrtSc routine from the video card's BIOS to replace the
  487.        default PrtSc handler from the ROM BIOS, which usually does not
  488.        understand screen heights other than 25 lines
  489.        some adapters disable print-screen instead of enhancing it
  490. SeeAlso: INT 05
  491. ----------1012--BL30-------------------------
  492. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL RESOLUTION
  493.     AH = 12h
  494.     BL = 30h
  495.     AL = vertical resolution
  496.          00h 200 scan lines
  497.          01h 350 scan lines
  498.          02h 400 scan lines
  499. Return: AL = 12h if function supported
  500. ----------1012--BL31-------------------------
  501. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING
  502.     AH = 12h
  503.     BL = 31h
  504.     AL = 00h enable default palette loading
  505.          01h disable default palette loading
  506. Return: AL = 12h if function supported
  507. ----------1012--BL32-------------------------
  508. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING
  509.     AH = 12h
  510.     BL = 32h
  511.     AL = 00h enable video addressing
  512.          01h disable video addressing
  513. Return: AL = 12h if function supported
  514. ----------1012--BL33-------------------------
  515. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE SUMMING
  516.     AH = 12h
  517.     BL = 33h
  518.     AL = 00h enable gray scale summing
  519.          01h disable gray scale summing
  520. Return: AL = 12h if function supported
  521. SeeAlso: AX=101Bh,AX=BF06h
  522. ----------1012--BL34-------------------------
  523. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION
  524.     AH = 12h
  525.     BL = 34h
  526.     AL = 00h enable alphanumeric cursor emulation
  527.          01h disable alphanumeric cursor emulation
  528. Return: AL = 12h if function supported
  529. ----------1012--BL35-------------------------
  530. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE
  531.     AH = 12h
  532.     BL = 35h
  533.     AL = 00h initial adapter video off
  534.          01h initial planar video on
  535.          02h switch active video off
  536.          03h switch inactive video on
  537.          80h *UNDOCUMENTED* set system board video active flag
  538.     ES:DX -> buffer (128 byte save area if AL = 0, 2 or 3)
  539. Return: AL = 12h if function supported
  540. ----------1012--BL36-------------------------
  541. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH CONTROL
  542.     AH = 12h
  543.     BL = 36h
  544.     AL = 00h enable refresh
  545.          01h disable refresh
  546. Return: AL = 12h if function supported
  547. ----------1013-------------------------------
  548. INT 10 - VIDEO - WRITE STRING (AT and later,EGA)
  549.     AH = 13h
  550.     AL = write mode
  551.          bit 0: update cursor after writing
  552.          1: string contains alternating characters and attributes
  553.     BH = page number
  554.     BL = attribute if string contains only characters
  555.     CX = number of characters in string
  556.     DH,DL = row,column at which to start writing
  557.     ES:BP -> string to write
  558. Notes: recognizes CR, LF, BS, and bell
  559.        also available PC or XT with EGA or higher
  560.        HP 95LX only supports write mode 00h
  561. BUG: on the IBM VGA Adapter, any scrolling which may occur is performed on
  562.      the active page rather than the requested page
  563. SeeAlso: AH=09h,AH=0Ah
  564. ----------101A-------------------------------
  565. INT 10 - VIDEO - DISPLAY COMBINATION (PS,VGA/MCGA)
  566.     AH = 1Ah
  567.     AL = 00h read display combination code
  568. Return:          BL = active display code (see below)
  569.          BH = alternate display code
  570.          01h set display combination code
  571.          BL = active display code (see below)
  572.          BH = alternate display code
  573. Return: AL = 1Ah if function was supported
  574.  
  575. Values for display combination code:
  576.   00h no display
  577.   01h monochrome adapter w/ monochrome display
  578.   02h CGA w/ color display
  579.   03h reserved
  580.   04h EGA w/ color display
  581.   05h EGA w/ monochrome display
  582.   06h PGA w/ color display
  583.   07h VGA w/ monochrome analog display
  584.   08h VGA w/ color analog display
  585.   09h reserved
  586.   0Ah MCGA w/ digital color display
  587.   0Bh MCGA w/ monochrome analog display
  588.   0Ch MCGA w/ color analog display
  589.   FFh unknown display type
  590. ----------101B-------------------------------
  591. INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)
  592.     AH = 1Bh
  593.     BX = implementation type
  594.          0000h return functionality/state information
  595.     ES:DI -> 64 byte buffer for state information (see below)
  596. Return: AL = 1Bh if function supported
  597.     ES:DI buffer filled with state information
  598. SeeAlso: AH=15h
  599.  
  600. Format of state information:
  601. Offset Size   Description
  602.  00h   DWORD  address of static functionality table (see below)
  603.  04h   BYTE   video mode in effect
  604.  05h   WORD   number of columns
  605.  07h   WORD   length of regen buffer in bytes
  606.  09h   WORD   starting address of regen buffer
  607.  0Bh   WORD   cursor position for page 0
  608.  0Dh   WORD   cursor position for page 1
  609.  0Fh   WORD   cursor position for page 2
  610.  11h   WORD   cursor position for page 3
  611.  13h   WORD   cursor position for page 4
  612.  15h   WORD   cursor position for page 5
  613.  17h   WORD   cursor position for page 6
  614.  19h   WORD   cursor position for page 7
  615.  1Bh   WORD   cursor type
  616.  1Dh   BYTE   active display page
  617.  1Eh   WORD   CRTC port address
  618.  20h   BYTE   current setting of register (3?8)
  619.  21h   BYTE   current setting of register (3?9)
  620.  22h   BYTE   number of rows
  621.  23h   WORD   bytes/character
  622.  25h   BYTE   display combination code of active display
  623.  26h   BYTE   DCC of alternate display
  624.  27h   WORD   number of colors supported in current mode
  625.  29h   BYTE   number of pages supported in current mode
  626.  2Ah   BYTE   number of scan lines active
  627.           (0,1,2,3) = (200,350,400,480)
  628.  2Bh   BYTE   primary character block
  629.  2Ch   BYTE   secondary character block
  630.  2Dh   BYTE   miscellaneous flags
  631.           bit 0 all modes on all displays on
  632.           1 gray summing on
  633.           2 monochrome display attached
  634.           3 default palette loading disabled
  635.           4 cursor emulation enabled
  636.           5 0 = intensity; 1 = blinking
  637.           6 PS/2 P70 plasma display (without 9-dot wide font) active
  638.           7 reserved
  639.  2Eh  3 BYTEs reserved (00h)
  640.  31h   BYTE   video memory available
  641.           00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K
  642.  32h   BYTE   save pointer state flags
  643.           bit 0 512 character set active
  644.           1 dynamic save area present
  645.           2 alpha font override active
  646.           3 graphics font override active
  647.           4 palette override active
  648.           5 DCC override active
  649.           6 reserved
  650.           7 reserved
  651.  33h 13 BYTEs reserved (00h)
  652.  
  653. Format of Static Functionality Table:
  654. Offset Size    Description
  655.  00h   BYTE    modes supported #1
  656.            bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6 supported
  657.  01h   BYTE    modes supported #2
  658.            bit 0 to bit 7 = 1 modes 8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh supported
  659.  02h   BYTE    modes supported #3
  660.            bit 0 to bit 3 = 1 modes 10h,11h,12h,13h supported
  661.            bit 4 to bit 7 reserved
  662.  03h  4 BYTEs  reserved
  663.  07h   BYTE    scan lines supported
  664.            bit 0 to bit 2 = 1 if scan lines 200,350,400 supported
  665.  08h   BYTE    total number of character blocks available in text modes
  666.  09h   BYTE    maximum number of active character blocks in text modes
  667.  0Ah   BYTE    miscellaneous function flags #1
  668.            bit 0 all modes on all displays function supported
  669.            1 gray summing function supported
  670.            2 character font loading function supported
  671.            3 default palette loading enable/disable supported
  672.            4 cursor emulation function supported
  673.            5 EGA palette present
  674.            6 color palette present
  675.            7 color paging function supported
  676.  0Bh   BYTE    miscellaneous function flags #2
  677.            bit 0 light pen supported
  678.            1 save/restore state function 1Ch supported
  679.            2 intensity blinking function supported
  680.            3 Display Combination Code supported
  681.          4-7 reserved
  682.  0Ch   WORD    reserved
  683.  0Eh   BYTE    save pointer function flags
  684.            bit 0 512 character set supported
  685.            1 dynamic save area supported
  686.            2 alpha font override supported
  687.            3 graphics font override supported
  688.            4 palette override supported
  689.            5 DCC extension supported
  690.            6 reserved
  691.            7 reserved
  692.  0Fh   BYTE    reserved
  693. ----------101C-------------------------------
  694. INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA)
  695.     AH = 1Ch
  696.     AL = 00h return state buffer size
  697. Return: BX = number of 64-byte blocks needed
  698.          01h save video state
  699.          ES:BX -> buffer
  700.          02h restore video state
  701.          ES:BX -> buffer containing previously saved state
  702.     CX = requested states
  703.          bit 0 video hardware
  704.          1 BIOS data areas
  705.          2 color registers and DAC state
  706.           3-15 reserved
  707. Return: AL = 1Ch if function supported
  708.